//
//  HACChartDataProvider.h
//  Pods
//
//  Created by Hotacool on 2017/8/30.
//
//

#import <Foundation/Foundation.h>
#import "HACChartData.h"
#import "HACChartDefine.h"

@protocol  HACChartDataProvider<NSObject>
@optional
@property (nonatomic) NSInteger xAxisCount;
@property (nonatomic) NSInteger yAxisCount;
/** 数据点显示rect */
@property (nonatomic, assign) CGRect pointRect;
/** 起始index，按照0方式计数 */
@property (nonatomic) NSInteger startIndex;
/** 实际结束的index */
@property (nonatomic) NSInteger endIndex;
/** 当前实际数据（数组的count） */
@property (nonatomic, readonly) NSInteger actualCount;
/** 当前绘图区域需要显示的数目，分时的值是固定，k线的值会跟随放大，缩小手势变化,用于计算x坐标*/
@property (nonatomic) NSInteger visualCount;
/** 单个宽度,由visualCount和frame决定 */
@property (nonatomic) CGFloat singleWidth;
/** 间隙,默认1，可以间接控制rect宽度singleWidth - itemsSpace， */
@property (nonatomic) CGFloat itemsSpace;
@property (nonatomic) CGFloat maxValue;/** 所有数据中最大值，包括指标(用于确定绘图上下边界) */
@property (nonatomic) CGFloat minValue;/** 所有数据中最小值，包括指标(用于确定绘图上下边界) */
@property (nonatomic, strong) HACChartData *data;

//增量data
- (void)addIncrementData:(HACChartData*)data ;
/** 计算画图限定值：最大最小值，单位线段长度等 */
- (void)calculateLimitValue ;
/** x轴坐标计算 */
- (CGFloat)calculatorXForValue:(CGFloat)value min:(CGFloat)min max:(CGFloat)max inRect:(CGRect)rect ;
/** y轴坐标计算 */
- (CGFloat)calculatorYForValue:(CGFloat)value min:(CGFloat)min max:(CGFloat)max inRect:(CGRect)rect ;
/** 点x坐标计算 */
- (CGFloat)xPointForIndex:(NSInteger)index inRect:(CGRect)rect ;
/** 计算涨跌type */
- (DrawingValueType)calculatorValueType:(id)currentData lastData:(id)lastData ;
/** 涨跌type对应颜色 */
- (UIColor *)colorWithValueType:(DrawingValueType)valueType ;
/** 最大值 */
- (CGFloat)maxValueForData:(HACChartDataEntry *)data ;
/** 最小值 */
- (CGFloat)minValueForData:(HACChartDataEntry *)data ;
/** 作图时相对index，转化到0~visualCount范围中 */
- (NSInteger)relativeIdxFromIndex:(NSInteger)i ;
@end
